/*
CREDITS:
Gun sprites - Neccronixis
Projectile sprite - Meeeeee, what a surprise!
Sounds - Raven Software, ID Software, Epic Games, Croteam, People can Fly
Projectile - People can Fly
Impaler - Raven Software
Idea - Xaser
Pickup - ThingThing
Pump Hand - Eriance
*/

ACTOR Tepesch : DoomWeapon 24510
{
   Inventory.PickupSound "misc/w_pkup"
   Inventory.PickupMessage "You got the ''Tepesch'' impaler rifle! To be honest, it's not very effective against vampires... it kills everything equally well! (7)"
   Obituary "%o was nailed by %k's ''Tepesch'' rifle. Ouch."
   Weapon.UpSound "Weapons/VladUp"
   Weapon.AmmoType "Boolet"
   Weapon.AmmoGive 90
   Weapon.AmmoUse 3
   Weapon.AmmoType2 "Boolet"
   Weapon.AmmoUse2 30
   Weapon.SlotNumber 7
   Weapon.BobStyle InverseSmooth
   Weapon.BobSpeed 1.3
   Weapon.BobRangeY 0.6
   Weapon.BobRangeX 1.2
   +NOALERT
   +NOAUTOFIRE
   States
   {
   Spawn:
      VLDG X -1
      Loop
   Ready:
      VLDG A 0 A_JumpIfInventory("Zoomed",1,"ZoomedReady")
      VLDG A 1 A_WeaponReady(WRF_ALLOWZOOM)
      Loop
   Select:
      VLDG A 0 A_TakeInventory("Zoomed",999)
      VLDG A 1 A_Raise
      VLDG A 0 A_Raise
      Loop
   Deselect:
      VLDG A 0 A_JumpIfInventory("Zoomed",1,"ZoomedDeselect")
      VLDG A 0 A_ZoomFactor(1)
      VLDG A 0 A_StopSound(6)
      VLDG A 0 A_SetTranslucent(1,0)
      VLDG A 1 A_Lower
      VLDG A 0 A_Lower
      Loop
   Fire:
      VLDG A 0 A_JumpIfInventory("Zoomed",1,"ZoomedFire")
      
      VLDF A 0 A_AlertMonsters
      VLDF A 0 A_GunFlash
      VLDF A 0 A_Recoil(3)
      VLDF A 0 ACS_Execute(851,0,25+random(5,-5),15+random(5,-5))
      VLDF A 0 A_PlaySound("Weapons/VladFire",5)
      VLDF A 0 A_FireCustomMissile("VladStake",0,1,11,0,0,0)
	  VLDF A 0 A_GiveInventory("BooletCasing",3)
      
      VLDF A 1 BRIGHT A_ZoomFactor(0.98)
      VLDF B 1 BRIGHT A_ZoomFactor(0.985)
      VLDG B 1 A_ZoomFactor(0.995)
      VLDG C 1 A_ZoomFactor(1)
      VLDG CDEA 1
      VLDG A 10 A_ReFire
      Goto Ready
   Hold:  
      VLDG A 0 A_JumpIfNoAmmo("Endo")
      VLDF A 0 A_AlertMonsters
      VLDF A 0 A_GunFlash
      VLDF A 0 A_Recoil(1)
	  VLDF A 0 A_SetPitch(Pitch-0.5)
      VLDF A 0 A_SetAngle(Angle-0.5)
      VLDF A 0 A_PlaySound("Weapons/VladLoop",6,1.0,1)
      VLDF A 0 A_FireCustomMissile("VladStake",frandom(1.50,-1.50),1,11,0,0,frandom(1.50,-1.50))
	  VLDF A 0 A_GiveInventory("BooletCasing",3)
 
      VLDF A 1 BRIGHT A_ZoomFactor(0.985)
      VLDF B 1 BRIGHT A_ZoomFactor(0.995)
      VLDG B 1 A_ZoomFactor(1)
      VLDG C 1
      VLDG A 0 A_ReFire
   Endo:
      VLDF A 0 A_PlaySound("Weapons/VladStop",6)
      VLDG DEA 1
      VLDG A 10
      Goto Ready
   Flash:
       TNT1 A 0 A_JumpIfInventory("Zoomed",1,3)
       TNT1 A 2 A_Light2
       TNT1 A 3 A_Light1
       Goto Lightdone
       TNT1 A 3 A_Light2
       TNT1 A 6 A_Light1
       Goto Lightdone

   ZoomedReady:
      VLDZ A 0 A_SetBlend("Red",0.1,3)
      VLDZ A 1 A_WeaponReady(WRF_NOBOB|WRF_ALLOWZOOM)
      Goto Ready
   UnZoom:
      VLDZ A 0 A_PlaySound("Weapons/VladZoomOut",5)
      VLDZ A 0 A_TakeInventory("Zoomed",999)

      VLDZ A 0 A_SetTranslucent(0.9,0)
      VLDZ A 1 A_SetBlend("Black",0.3,3) 
      
      VLDZ A 0 A_SetTranslucent(0.92,0)
      VLDZ A 1 A_SetBlend("Black",0.4,3)
      
      VLDZ A 0 A_SetTranslucent(0.94,0)
      VLDZ A 1 A_SetBlend("Black",0.45,3)
      VLDZ A 0 A_ZoomFactor(1.00)
      
      VLDZ A 0 A_SetTranslucent(0.96,0)
      VLDZ A 1 A_SetBlend("Black",0.6,3)
      
      VLDZ A 0 A_SetTranslucent(0.98,0)
      VLDZ A 1 A_SetBlend("Black",0.75,3)
      
      VLDZ A 0 A_SetTranslucent(1,0)
      VLDZ A 1 A_SetBlend("Black",0.9,3)
      
      VLDG A 16 A_SetBlend("Black",1.1,25)
      Goto Ready
  ZoomedDeselect:
      VLDZ A 0 A_PlaySound("Weapons/VladZoomOut",5)
      VLDZ A 0 A_TakeInventory("Zoomed",999)

      VLDZ A 0 A_SetTranslucent(0.9,0)
      VLDZ A 1 A_SetBlend("Black",0.3,3) 
      
      VLDZ A 0 A_SetTranslucent(0.92,0)
      VLDZ A 1 A_SetBlend("Black",0.4,3)
      
      VLDZ A 0 A_SetTranslucent(0.94,0)
      VLDZ A 1 A_SetBlend("Black",0.45,3)
      VLDZ A 0 A_ZoomFactor(1.00)
      
      VLDZ A 0 A_SetTranslucent(0.96,0)
      VLDZ A 1 A_SetBlend("Black",0.6,3)
      
      VLDZ A 0 A_SetTranslucent(0.98,0)
      VLDZ A 1 A_SetBlend("Black",0.75,3)
      
      VLDZ A 0 A_SetTranslucent(1,0)
      VLDZ A 1 A_SetBlend("Black",0.9,3)
      
      VLDZ AAAAAAAAAA 1 A_SetBlend("Black",1,3)
      
      VLDG A 16 A_SetBlend("Black",1.1,25)
  ZoomedDeselectMain:
      VLDG A 1 A_Lower
      VLDG A 0 A_Lower
      Loop

   ZoomedFire:
      VLDZ A 0 A_GunFlash
      VLDF A 0 A_AlertMonsters
      VLDF A 0 A_GunFlash
      VLDF A 0 A_PlaySound("Weapons/VladFire",5)
      VLDF A 0 A_FireCustomMissile("VladStake",0,1,0,0,0,0)
	  VLDF A 0 A_GiveInventory("BooletCasing",3)
      VLDZ A 0 A_SetBlend("Red",0.2,5)
      
      VLDZ A 1 Bright A_ZoomFactor(2.975)
      VLDZ A 0 A_SetPitch(pitch-0.7)
      
      VLDZ A 1 Bright A_ZoomFactor(2.985)
      VLDZ A 1 Bright A_ZoomFactor(2.995)
      VLDZ A 1 A_ZoomFactor(3)
      
      VLDZ AAAA 1 A_SetBlend("Red",0.1,3)
      VLDZ A 0 A_ReFire("ZoomedHold")
      VLDZ A 0 A_GiveInventory("VladCounter",10)
      Goto Charge
   ZoomedHold:
      VLDZ A 0 A_GunFlash
      VLDF A 0 A_AlertMonsters
      VLDF A 0 A_GunFlash
      VLDF A 0 A_PlaySound("Weapons/VladLoop",6,1.0,1)
      VLDF A 0 A_FireCustomMissile("VladStake",frandom(0.50,-0.50),1,0,0,0,frandom(0.50,-0.50))
	  VLDF A 0 A_GiveInventory("BooletCasing",3)
	  
      VLDZ A 0 A_SetBlend("Red",0.1,3)
      VLDZ A 1 Bright A_ZoomFactor(2.985)
      VLDZ A 0 A_SetPitch(pitch-0.3)
      
      VLDZ A 0 A_SetBlend("Red",0.1,3)
      VLDZ A 1 Bright A_ZoomFactor(2.99)
      VLDZ A 0 A_SetBlend("Red",0.1,3)
      VLDZ A 1 Bright A_ZoomFactor(2.995)
      VLDZ A 0 A_SetBlend("Red",0.1,3)
      VLDZ A 1 A_ZoomFactor(3)
      
      VLDZ A 0 A_ReFire("ZoomedHold")
      VLDF A 0 A_PlaySound("Weapons/VladStop",6)
      VLDZ A 0 A_GiveInventory("VladCounter",13)
      Goto Charge
   Zoom:
      VLDG A 0 A_JumpIfInventory("Zoomed",1,"UnZoom")

      VLDG A 0 A_GiveInventory("Zoomed",1)
      VLDG A 0 A_PlaySound("Weapons/VladZoomIn",5)

      VLDG A 1 A_SetBlend("Black",0.15,3)
      VLDG A 1 A_SetBlend("Black",0.3,3)
      VLDG A 1 A_SetBlend("Black",0.45,3)
      VLDG A 1 A_SetBlend("Black",0.6,3)
      VLDG A 1 A_SetBlend("Black",0.75,3)
      VLDG A 1 A_SetBlend("Black",0.9,3)

      VLDG AAAAAAAAAA 1 A_SetBlend("Black",1,11)
      
      VLDZ A 0 A_ZoomFactor(3.00)
      VLDZ A 0 A_SetTranslucent(0.98,0)
      VLDZ A 1 A_SetBlend("Black",0.9,3)
      
      VLDZ A 0 A_SetTranslucent(0.96,0)
      VLDZ A 1 A_SetBlend("Black",0.85,3)
      
      VLDZ A 0 A_SetTranslucent(0.84,0)
      VLDZ A 1 A_SetBlend("Black",0.75,3)
      
      VLDZ A 0 A_SetTranslucent(0.82,0)
      VLDZ A 1 A_SetBlend("Black",0.65,3)
      
      VLDZ A 0 A_SetTranslucent(0.81,0)
      VLDZ A 1 A_SetBlend("Black",0.55,3)
      
      VLDZ A 0 A_SetTranslucent(0.8,0)
      VLDZ A 1 A_SetBlend("Black",0.45,3)
      
      VLDZ A 1 A_SetBlend("Red",0.15,1)
      VLDZ A 1 A_SetBlend("Red",0.14,1)
      VLDZ A 1 A_SetBlend("Red",0.13,1)
      VLDZ A 1 A_SetBlend("Red",0.12,1)
      VLDZ A 1 A_SetBlend("Red",0.11,1)
      VLDZ A 1 A_SetBlend("Red",0.1,1)
      
      VLDZ A 0 A_GiveInventory("VladCounter",5)
      Goto Charge
   Charge:
      VLDZ A 0 A_JumpIfInventory("VladCounter",1,"Looplet")
      Goto Ready
   Looplet:
      VLDZ A 1 A_SetBlend("Red",0.1,3)
      VLDZ A 0 A_TakeInventory("VladCounter",1)
      Goto Charge
   AltFire:
      VLDG A 0 A_JumpIfInventory("Zoomed",1,"ZoomedAltFire")
      
      VLDF A 0 A_AlertMonsters
      VLDF A 0 A_GunFlash
      VLDF A 0 A_Recoil(8)
	  VLDF A 0 A_SetPitch(Pitch-7)
      VLDF A 0 A_SetAngle(Angle-5)
      VLDF A 0 A_PlaySound("Weapons/VladAltFire",5)
      VLDF A 0 A_PlaySound("Weapons/VladAddAltFire",6)
      VLDF A 0 A_FireCustomMissile("VladSpikeProjectile",0,1,11,0,0,0)
	  VLDF A 0 A_GiveInventory("BooletCasing",30)
	  
      VLDF A 1 BRIGHT A_ZoomFactor(0.98)
      VLDF B 1 BRIGHT A_ZoomFactor(0.97)
      VLDG B 1 A_ZoomFactor(0.975)
      VLDG C 1 A_ZoomFactor(0.98)
      VLDG C 1 A_ZoomFactor(0.985)
      VLDG D 1 A_ZoomFactor(0.99)
      VLDG E 1 A_ZoomFactor(0.995)
      VLDG A 1 A_ZoomFactor(1)
      VLDR ABCDEFGHIJKLMNOPQRRRQPONMLKJIHGFEDCBA 1
      VLDG A 1
      Goto Ready
	  
   Reload:
      VLDG A 0 A_JumpIfInventory("Zoomed",1,"ZoomedReload")
      
      VLDF A 0 A_AlertMonsters
      VLDF A 0 A_GunFlash
      VLDF A 0 A_Recoil(8)
	  VLDF A 0 A_SetPitch(Pitch-7)
      VLDF A 0 A_SetAngle(Angle-5)
      VLDF A 0 A_PlaySound("Weapons/VladAltFire",5)
      VLDF A 0 A_PlaySound("Weapons/VladAddAltFire",6)
      VLDF A 0 A_FireCustomMissile("VladSpikeProjectile",0,1,11,0,0,0)
	  VLDF A 0 A_GiveInventory("BooletCasing",30)
	  
      VLDF A 1 BRIGHT A_ZoomFactor(0.98)
      VLDF B 1 BRIGHT A_ZoomFactor(0.97)
      VLDG B 1 A_ZoomFactor(0.975)
      VLDG C 1 A_ZoomFactor(0.98)
      VLDG C 1 A_ZoomFactor(0.985)
      VLDG D 1 A_ZoomFactor(0.99)
      VLDG E 1 A_ZoomFactor(0.995)
      VLDG A 1 A_ZoomFactor(1)
      VLDR ABCDEFGHIJKLMNOPQRRRQPONMLKJIHGFEDCBA 1
      VLDG A 1
      Goto Ready
   ZoomedAltFire:
      VLDZ A 0 A_GunFlash
      VLDZ A 0 A_Recoil(2)
      VLDZ A 0 A_FireCustomMissile("VladSpikeProjectile",0,1) //A_FireBullets(1,0.5,1,0,"VladPuff",0)
	  VLDF A 0 A_GiveInventory("BooletCasing",30)
	  VLDZ A 0 A_PlaySound("Weapons/VladAltFire",5)
      VLDZ A 0 A_PlaySound("Weapons/VladAddAltFire",6)
      VLDZ A 0 A_SetBlend("Red",0.3,7)
      
      VLDZ A 1 Bright A_ZoomFactor(2.95)
      VLDZ A 0 A_SetPitch (pitch-6)
      
      VLDZ A 1 Bright A_ZoomFactor(2.97)
      VLDZ A 1 Bright A_ZoomFactor(2.99)
      VLDZ A 1 A_ZoomFactor(2.995)
      VLDZ A 1 A_ZoomFactor(2.9975)
      VLDZ A 1 A_ZoomFactor(3)
      
      VLDZ A 0 A_GiveInventory("VladCounter",40)
      Goto Charge
   }
}

ACTOR VladCounter : Inventory
{
      Inventory.MaxAmount 99
}

ACTOR VladStake : FastProjectile
{
	Radius 10
	Height 6
	Speed 125
	Damage 78 //13 * 6, unlucky number and devil's digit!
	
	Obituary "%o was nailed by %k's ''Tepesch'' rifle. Ouch."

	PROJECTILE
	-NOGRAVITY
	+EXPLODEONWATER

	Scale 0.9

	SeeSound ""
	Deathsound ""

	MissileType "StakeTrailSpawner"
	MissileHeight 6
	States
	{
	Spawn:
		STAK AA 0 ThrustThingZ(0, 3, 0, 1)
		STAK A 0 A_PlaySound("Weapons/VladFly",5,1.0,1)
    Looplet:
		STAK A 1 ThrustThingZ(0,random(-1,-2),0,1)
		Loop
	Death:
		TNT1 A 0
		TNT1 A 0 A_StopSoundEx("SoundSlot5")
		TNT1 A 0 A_PlaySound("Weapons/StakeHit")
		TNT1 A 1 A_SpawnItemEx("StakeWall",0,0,0,0,0,0,0,128)
		Stop
	XDeath:
		TNT1 A 0
		TNT1 A 0 A_StopSoundEx("SoundSlot5")
		TNT1 A 0 A_PlaySound("Weapons/StakeFlesh")
		//TNT1 AAAAAAAAAAAAAAAA 0 A_SpawnItemEx("Blood",random(5,10),random(5,10),random(5,10),0.1*random(30,100),0.1*random(30,100),0.1*random(65,100),random(0,359),128,0)
		TNT1 A 1
		Stop
	}
}

ACTOR StakeTrailSpawner
{
	+NOGRAVITY
	+NOINTERACTION
	+CLIENTSIDEONLY
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_Jump(96,2)
		TNT1 A 0 A_SpawnItemEx("StakeTrail",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
		TNT1 A 1
		stop
	}
}

ACTOR StakeTrail
{
	+NOGRAVITY
	+NOINTERACTION
	Renderstyle Translucent
	Alpha 0.75
	Scale 0.9
	States
	{
	Spawn:
		TNT1 A 0
		STAK AA 1 A_FadeOut(0.25)
		stop
	}
}

ACTOR StakeWall
{
	radius 10
	height 6
	Scale 0.9
	+NOGRAVITY
	+CLIENTSIDEONLY
	States
	{
	Spawn:
		STAK A 170
		STAK AAAAAAAAAA 1 A_FadeOut(0.1)
		stop
	}
}


//Alt Fire

ACTOR VladSpikeProjectile : FastProjectile
{
	Radius 11
	Height 7
	Speed 200
	PROJECTILE
	+NOGRAVITY
	+EXPLODEONWATER
	States
	{
	Spawn:
	 TNT1 A 1
	 Loop
	Death:
		TNT1 A 0
		TNT1 A 1 A_CustomMissile("EarthSpikeSpanner",0,0,0,CMF_TRACKOWNER)// A_SpawnItemEx("EarthSpikeSpanner",-4,0,0,0,0,0,0,0,0)
		Stop
	}
}

ACTOR VladPuff : BulletPuff
{
  +PUFFONACTORS
  States
  {
  Spawn:
    TNT1 A 0  
    TNT1 A 1
    Stop
  }
}

ACTOR EarthSpikeSpanner
{
	PROJECTILE
	+FLOORHUGGER
	+FLOORCLIP
	+EXPLODEONWATER
	+NOCLIP
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 1 A_SpawnItemEx("EarthSpike",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
	Stop
	}
}
ACTOR EarthSpike
{
	Mass 2500
	Scale 1.5
	Projectile
	Renderstyle Translucent
	+FORCERADIUSDMG
	States
	{
	Spawn:
		TNT1 A 10
		SPIK A 20
		SPIK A 0 A_PlaySound("Weapons/VladPole")
		SPIK A 0 A_PlaySound("Weapons/VladEruption",6)
		SPIK ABC 2
		SPIK D 2 Radius_Quake(6,24,0,6,0)
		SPIK EEEEEEEEEEEEEEE 0 A_SpawnItemEx("EarthChunk",0,0,0,random(12,-12),random(12,-12),random(23,10),random(0,359),128)
		SPIK EF 2
		SPIK G 48 A_Explode(4800,164,0)
		SPIK FEDCB 2 
		SPIK A 100
		SPIK AAAAAAAAAAAAAAAAAAAA 1 A_FadeOut(0.05)
		Stop
	Death:
		TNT1 A 1
		Stop
	}
}

ACTOR EarthChunk
{
   Radius 10
   Height 8
   Speed 16
   Damage 0
   Scale 0.8
   PROJECTILE  
   -NoGravity
   +DoomBounce
   Gravity 0.89
   states
   {
   Spawn:
      CHNK ABCDEFGH 3
      Loop
   Death:
      CHNK A 20
      //TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 8 A_SpawnItemEx("MinorEarthSpike",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS) //Some motherfucking silly and awesome impaling
      CHNK A 200
      CHNK AAAAAAAAAAAAAAAAAAAAAAA 1 A_FadeOut(0.05)
      Stop
   }
}

ACTOR MinorEarthSpike
{
	Scale 0.5
	Radius 6
	Height 8
	Projectile
	Renderstyle Translucent
	+FLOORHUGGER
	+NOCLIP
	States
	{
	Spawn:
		SPIK A 0
		SPIK A 1 A_PlaySound("Weapons/VladPole",0.7)
		SPIK BC 1
		SPIK D 1 Radius_Quake(2,5,0,2,0)
		SPIK EF 1
		SPIK G 1 A_Explode(90,128,0)
		SPIK FEDCB 1 
		SPIK A 50
		SPIK AAAAAAAAAAAAAAAAAAAA 1 A_FadeOut(0.05)
		Stop
	Death:
		TNT1 A 1
		Stop
	}
}
